home *** CD-ROM | disk | FTP | other *** search
/ Eagles Nest BBS 5 / Eagles_Nest_Mac_Collection_Disc_5.TOAST / Math & Engineering / MathNotebook / A Sampling of Mathematica < prev    next >
Text File  |  1989-11-04  |  36KB  |  834 lines

  1. (*^
  2.  
  3. ::[paletteColors = 128; 
  4.     fontset = title, "New York", 18, L2, center, bold, R34351, G1374, B1374, nohscroll;
  5.     fontset = subtitle, "New York", 14, L2, center, bold, R34351, G1374, B1374, nohscroll;
  6.     fontset = subsubtitle, "New York", 12, L2, center, bold, R34351, G1374, B1374, nohscroll;
  7.     fontset = section, "New York", 14, L2, bold, R34351, G1374, B1374, nohscroll, grayBox;
  8.     fontset = subsection, "New York", 12, L2, bold, R34351, G1374, B1374, nohscroll, blackBox;
  9.     fontset = subsubsection, "New York", 10, L2, bold, R34351, G1374, B1374, nohscroll, whiteBox;
  10.     fontset = text, "New York", 10, L2, nohscroll;
  11.     fontset = smalltext, "New York", 10, L2, nohscroll;
  12.     fontset = input, "Courier", 12, L2, bold, R3627, G4302, B30180, nowordwrap;
  13.     fontset = output, "Courier", 12, L2, R3627, G4302, B30180, nowordwrap;
  14.     fontset = message, "Courier", 12, L2, R65535, nowordwrap;
  15.     fontset = print, "Courier", 12, L2, nowordwrap;
  16.     fontset = info, "Courier", 12, L2, nowordwrap;
  17.     fontset = postscript, "Courier", 12, L2, nowordwrap;
  18.     fontset = name, "Geneva", 10, L2, italic, B65535, nohscroll;
  19.     fontset = header, "New York", 10, L2, nohscroll;
  20.     fontset = footer, "New York", 12, L2, center, nohscroll;
  21.     fontset = help, "Geneva", 10, L2, nohscroll;
  22.     fontset = clipboard, "New York", 12, L2;
  23.     fontset = completions, "New York", 12, L2;
  24.     fontset = network, "Courier", 10, L2, nowordwrap;
  25.     fontset = graphlabel, "Courier", 12, L2;
  26.     fontset = special1, "New York", 12, L2;
  27.     fontset = special2, "New York", 12, L2, center;
  28.     fontset = special3, "New York", 12, L2, right;
  29.     fontset = special4, "New York", 12, L2;
  30.     fontset = special5, "New York", 12, L2;]
  31. :[font = title; inactive; startGroup; ]
  32. A Sampling of Mathematica® 
  33. ;[s]
  34. 4:0,0;14,1;25,2;26,0;28,-1;
  35. 3:2,23,17,New York,1,18,34351,1374,1374;1,23,17,New York,3,18,34351,1374,1374;1,12,10,New York,0,9,34351,1374,1374;
  36. :[font = text; inactive; ]
  37.      This file is a Mathematica Notebook that gives some examples of what Mathematica  can do.  For information on how to read this Notebook, see the file Read This First!
  38.      This file is loosely based on Chapter 0 of The Mathematica Book: "Mathematica: A System for Doing Mathematics by Computer", by Stephen Wolfram.  This book was published by Addison-Wesley in 1988, and is available at most bookstores.  For information on how to obtain copies of Mathematica  itself, see the section "Buying Mathematica" in the file Read This First!
  39. ;[s]
  40. 17:0,0;20,1;31,0;74,1;85,0;155,2;172,0;224,1;235,0;243,1;254,0;454,1;465,0;499,1;510,0;524,2;540,0;541,-1;
  41. 3:9,14,10,New York,0,10,0,0,0;6,14,10,New York,2,10,0,0,0;2,14,10,New York,1,10,0,0,0;
  42. :[font = section; inactive; startGroup; Cclosed; ]
  43. Numerical Calculations
  44. :[font = text; inactive; ]
  45. You can use Mathematica as an enhanced scientific calculator.  Let's start with a simple example. 
  46. ;[s]
  47. 5:0,0;12,1;23,0;81,2;82,0;99,-1;
  48. 3:3,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;1,14,10,New York,0,10,65535,0,65535;
  49. :[font = input; startGroup; ]
  50. 45 + 78
  51. :[font = output; inactive; output; endGroup; ]
  52. 123
  53. ;[o]
  54. 123
  55. :[font = text; inactive; ]
  56. The first line here is what you type into Mathematica.  The second line is the result Mathematica  gives.  If you are reading this Notebook on a color system, the input and output are blue, with the input in boldface.
  57. ;[s]
  58. 5:0,0;42,1;53,0;86,1;97,0;218,-1;
  59. 2:3,14,10,New York,0,10,0,0,0;2,14,10,New York,2,10,0,0,0;
  60. :[font = text; inactive; ]
  61. Now let's try something more difficult.
  62. :[font = input; startGroup; ]
  63. 3^100
  64. :[font = output; inactive; output; endGroup; ]
  65. 515377520732011331036461129765621272702107522001
  66. ;[o]
  67. 515377520732011331036461129765621272702107522001
  68. :[font = text; inactive; ]
  69. Unlike a calculator, Mathematica  gives an exact answer for 3 raised to the power 100.
  70. ;[s]
  71. 3:0,0;21,1;32,0;87,-1;
  72. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  73. :[font = text; inactive; ]
  74. Now let's really test out Mathematica.  Here is 3 raised to the power 1000.
  75. ;[s]
  76. 3:0,0;26,1;37,0;76,-1;
  77. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  78. :[font = input; startGroup; ]
  79. 3^1000
  80. :[font = output; inactive; output; endGroup; ]
  81. 13220708194808066368904552597521443659654220327521481676649\
  82.  2036822682859734670489954077831385060806196390977769687258\
  83.  2355950954582100618911865342725257953674027620225198320803\
  84.  8780147742289648412743904001175886180411289478156230944380\
  85.  6156617305408667449050617812548034440554705439703889581746\
  86.  5368254916136220830268563778582290228416398307887896918556\
  87.  4040848989376093732421718463599386955167650189405881090604\
  88.  2608967143886410281435038564874716583201061436613217310276\
  89.  8902855220001
  90. ;[o]
  91. 13220708194808066368904552597521443659654220327521481676649\
  92.  
  93.  2036822682859734670489954077831385060806196390977769687258\
  94.  
  95.  2355950954582100618911865342725257953674027620225198320803\
  96.  
  97.  8780147742289648412743904001175886180411289478156230944380\
  98.  
  99.  6156617305408667449050617812548034440554705439703889581746\
  100.  
  101.  5368254916136220830268563778582290228416398307887896918556\
  102.  
  103.  4040848989376093732421718463599386955167650189405881090604\
  104.  
  105.  2608967143886410281435038564874716583201061436613217310276\
  106.  
  107.  8902855220001
  108. :[font = text; inactive; ]
  109. This took about half a second on a Macintosh II.
  110. :[font = text; inactive; ]
  111. Here's the result in the form you might get on a calculator.
  112. :[font = input; startGroup; ]
  113. N[%]
  114. :[font = output; inactive; output; endGroup; ]
  115. "1.32207"*10^"477"
  116. ;[o]
  117.           477
  118. 1.32207 10
  119. :[font = text; inactive; ]
  120. Here is the value of pi to two hundred decimal places.
  121. :[font = input; startGroup; ]
  122. N[Pi, 200]
  123. :[font = output; inactive; output; endGroup; ]
  124. 3.141592653589793238462643383279502884197169399375105820974\
  125.  9445923078164062862089986280348253421170679821480865132823\
  126.  0664709384460955058223172535940812848111745028410270193852\
  127.  1105559644622948954930382
  128. ;[o]
  129. 3.141592653589793238462643383279502884197169399375105820974\
  130.  
  131.  9445923078164062862089986280348253421170679821480865132823\
  132.  
  133.  0664709384460955058223172535940812848111745028410270193852\
  134.  
  135.  1105559644622948954930382
  136. :[font = text; inactive; ]
  137. Mathematica  knows about a big collection of mathematical functions — most of those you would find in any book of mathematical tables.
  138. ;[s]
  139. 2:0,1;11,0;135,-1;
  140. 2:1,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  141. :[font = input; startGroup; ]
  142. BesselJ[5, 34.6]
  143. :[font = output; inactive; output; endGroup; ]
  144. 0.0511826
  145. ;[o]
  146. 0.0511826
  147. :[font = input; startGroup; ]
  148. Log[4.5 + 2I] 
  149. :[font = output; inactive; output; endGroup; ]
  150. 1.59421 + 0.418224*I
  151. ;[o]
  152. 1.59421 + 0.418224 I
  153. :[font = input; startGroup; ]
  154. Zeta[1/2 + 14.3 I]
  155. :[font = output; inactive; output; endGroup; endGroup; ]
  156. -0.0119878 + 0.132231*I
  157. ;[o]
  158. -0.0119878 + 0.132231 I
  159. :[font = section; inactive; startGroup; Cclosed; ]
  160. Algebraic Calculations
  161. :[font = text; inactive; ]
  162. One of the most important features of Mathematica  is its ability to deal with mathematical formulas in algebraic form.
  163. ;[s]
  164. 3:0,0;38,1;49,0;120,-1;
  165. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  166. :[font = input; startGroup; ]
  167. (1 + x)^3
  168. :[font = output; inactive; output; endGroup; ]
  169. (1 + x)^3
  170. ;[o]
  171.        3
  172. (1 + x)
  173. :[font = text; inactive; ]
  174. This is what Mathematica does if you type in a simple algebraic expression.
  175. You can expand out the expression like this:
  176. ;[s]
  177. 3:0,0;13,1;24,0;121,-1;
  178. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  179. :[font = input; startGroup; ]
  180. Expand[%]
  181. :[font = output; inactive; output; endGroup; ]
  182. 1 + 3*x + 3*x^2 + x^3
  183. ;[o]
  184.              2    3
  185. 1 + 3 x + 3 x  + x
  186. :[font = text; inactive; ]
  187. Mathematica gives an explicit formula for the result.
  188. You can factor this result to get back to what you started from.
  189. % always stands for the last result that Mathematica gave you.
  190. ;[s]
  191. 6:0,1;11,0;119,2;120,0;160,1;171,0;182,-1;
  192. 3:3,14,10,New York,0,10,0,0,0;2,14,10,New York,2,10,0,0,0;1,13,9,Courier,0,10,0,0,0;
  193. :[font = input; startGroup; ]
  194. Factor[%]
  195. :[font = output; inactive; output; endGroup; ]
  196. (1 + x)^3
  197. ;[o]
  198.        3
  199. (1 + x)
  200. :[font = text; inactive; ]
  201. Now let's try a more complicated example.
  202. :[font = input; startGroup; ]
  203. (1 + 2x + 5y)^7
  204. :[font = output; inactive; output; endGroup; ]
  205. (1 + 2*x + 5*y)^7
  206. ;[o]
  207.                7
  208. (1 + 2 x + 5 y)
  209. :[font = input; startGroup; ]
  210. Expand[%]
  211. :[font = output; inactive; output; endGroup; ]
  212. 1 + 14*x + 84*x^2 + 280*x^3 + 560*x^4 + 672*x^5 + 448*x^6 + 
  213.    128*x^7 + 35*y + 420*x*y + 2100*x^2*y + 5600*x^3*y + 
  214.    8400*x^4*y + 6720*x^5*y + 2240*x^6*y + 525*y^2 + 
  215.    5250*x*y^2 + 21000*x^2*y^2 + 42000*x^3*y^2 + 42000*x^4*y^2 + 
  216.    16800*x^5*y^2 + 4375*y^3 + 35000*x*y^3 + 105000*x^2*y^3 + 
  217.    140000*x^3*y^3 + 70000*x^4*y^3 + 21875*y^4 + 131250*x*y^4 + 
  218.    262500*x^2*y^4 + 175000*x^3*y^4 + 65625*y^5 + 262500*x*y^5 + 
  219.    262500*x^2*y^5 + 109375*y^6 + 218750*x*y^6 + 78125*y^7
  220. ;[o]
  221.                2        3        4        5        6
  222. 1 + 14 x + 84 x  + 280 x  + 560 x  + 672 x  + 448 x  + 
  223.  
  224.         7                          2           3
  225.    128 x  + 35 y + 420 x y + 2100 x  y + 5600 x  y + 
  226.  
  227.          4           5           6          2           2
  228.    8400 x  y + 6720 x  y + 2240 x  y + 525 y  + 5250 x y  + 
  229.  
  230.           2  2          3  2          4  2          5  2
  231.    21000 x  y  + 42000 x  y  + 42000 x  y  + 16800 x  y  + 
  232.  
  233.          3            3           2  3           3  3
  234.    4375 y  + 35000 x y  + 105000 x  y  + 140000 x  y  + 
  235.  
  236.           4  3          4             4           2  4
  237.    70000 x  y  + 21875 y  + 131250 x y  + 262500 x  y  + 
  238.  
  239.            3  4          5             5           2  5
  240.    175000 x  y  + 65625 y  + 262500 x y  + 262500 x  y  + 
  241.  
  242.            6             6          7
  243.    109375 y  + 218750 x y  + 78125 y
  244. :[font = input; startGroup; ]
  245. Factor[%]
  246. :[font = output; inactive; output; endGroup; ]
  247. (1 + 2*x + 5*y)^7
  248. ;[o]
  249.                7
  250. (1 + 2 x + 5 y)
  251. :[font = subsection; inactive; startGroup; Cclosed; ]
  252. Calculus
  253. :[font = text; inactive; ]
  254. You can use Mathematica to do calculus. Here's a simple integral.
  255. ;[s]
  256. 3:0,0;12,1;23,0;66,-1;
  257. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  258. :[font = input; startGroup; ]
  259. Integrate[x^n, x]
  260. :[font = output; inactive; output; endGroup; ]
  261. x^(1 + n)/(1 + n)
  262. ;[o]
  263.  1 + n
  264. x
  265. ------
  266. 1 + n
  267. :[font = text; inactive; ]
  268. Here's a more complicated example.
  269. :[font = input; startGroup; ]
  270. Integrate[x/(x^3-1), x]
  271. :[font = output; inactive; output; endGroup; ]
  272. (3^(1/2)*ArcTan[(1 + 2*x)/3^(1/2)])/3 + Log[1 - x]/3 - 
  273.    Log[1 + x + x^2]/6
  274. ;[o]
  275.                1 + 2 x
  276. Sqrt[3] ArcTan[-------]                             2
  277.                Sqrt[3]    Log[1 - x]   Log[1 + x + x ]
  278. ----------------------- + ---------- - ---------------
  279.            3                  3               6
  280. :[font = text; inactive; ]
  281. Now let's try differentiating again.
  282. :[font = input; startGroup; ]
  283. D[%, x]
  284. :[font = output; inactive; output; endGroup; ]
  285. -1/(3*(1 - x)) + 2/(3*(1 + (1 + 2*x)^2/3)) - 
  286.    (1 + 2*x)/(6*(1 + x + x^2))
  287. ;[o]
  288.    -1               2               1 + 2 x
  289. --------- + ------------------ - --------------
  290. 3 (1 - x)                   2                2
  291.                    (1 + 2 x)     6 (1 + x + x )
  292.             3 (1 + ----------)
  293.                        3
  294. :[font = text; inactive; ]
  295. This gives the expression in a different algebraic form. We can get back our original form using Simplify.
  296. ;[s]
  297. 3:0,0;97,1;105,0;107,-1;
  298. 2:2,14,10,New York,0,10,0,0,0;1,13,9,Courier,1,10,0,0,0;
  299. :[font = input; startGroup; ]
  300. Simplify[%]
  301. :[font = output; inactive; output; endGroup; endGroup; ]
  302. x/(-1 + x^3)
  303. ;[o]
  304.    x
  305. -------
  306.       3
  307. -1 + x
  308. :[font = subsection; inactive; startGroup; Cclosed; ]
  309. Solving Equations
  310. :[font = text; inactive; ]
  311. This is how you solve a quadratic equation in Mathematica.
  312. ;[s]
  313. 3:0,0;46,1;57,0;59,-1;
  314. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  315. :[font = input; startGroup; ]
  316. Solve[x^2 + 2 a x + 1 == 0, x]
  317. :[font = output; inactive; output; endGroup; ]
  318. {{x -> (-2*a + (-4 + 4*a^2)^(1/2))/2}, 
  319.    {x -> (-2*a - (-4 + 4*a^2)^(1/2))/2}}
  320. ;[o]
  321.                            2
  322.        -2 a + Sqrt[-4 + 4 a ]
  323. {{x -> ----------------------}, 
  324.                  2
  325.  
  326.                              2
  327.          -2 a - Sqrt[-4 + 4 a ]
  328.    {x -> ----------------------}}
  329.                    2
  330. :[font = text; inactive; ]
  331. Here's a more complicated example.
  332. :[font = input; startGroup; ]
  333. Solve[x^5 + 3x + 1 == 0, x]
  334. :[font = output; inactive; output; endGroup; ]
  335. {ToRules[Roots[3*x + x^5 == -1, x]]}
  336. ;[o]
  337.                       5
  338. {ToRules[Roots[3 x + x  == -1, x]]}
  339. :[font = text; inactive; ]
  340. It is a fact of mathematics that there is no way to get an exact formula for the solutions of a quintic equation like this.  You can nevertheless ask Mathematica to give you numerical results.  You get the five complex number roots to the equation.
  341. ;[s]
  342. 3:0,0;150,1;161,0;249,-1;
  343. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  344. :[font = input; startGroup; ]
  345. N[%]
  346. :[font = output; inactive; output; endGroup; endGroup; endGroup; ]
  347. {{x -> -0.839072 - 0.943852*I}, 
  348.    {x -> -0.839072 + 0.943852*I}, {x -> -0.331989}, 
  349.    {x -> 1.00507 - 0.937259*I}, {x -> 1.00507 + 0.937259*I}}
  350. ;[o]
  351. {{x -> -0.839072 - 0.943852 I}, 
  352.  
  353.    {x -> -0.839072 + 0.943852 I}, {x -> -0.331989}, 
  354.  
  355.    {x -> 1.00507 - 0.937259 I}, {x -> 1.00507 + 0.937259 I}}
  356. :[font = section; inactive; startGroup; Cclosed; ]
  357. Graphics
  358. :[font = input; startGroup; ]
  359. Plot[Sin[x], {x, 0, 2Pi}]
  360. :[font = postscript; inactive; PICT; pictureID = 7529; output; endGroup; pictureLeft = 61; pictureWidth = 282; pictureHeight = 174; preserveAspect; ]
  361.  
  362. :[font = text; inactive; ]
  363. Here is a simple Mathematica plot. 
  364. ;[s]
  365. 3:0,0;17,1;28,0;36,-1;
  366. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  367. :[font = text; inactive; ]
  368. Now for some three-dimensional graphics.
  369. :[font = input; startGroup; ]
  370. Plot3D[Sin[x y], {x, 0, 3}, {y, 0, 3}]
  371. :[font = postscript; inactive; PICT; pictureID = 5819; output; endGroup; pictureLeft = 61; pictureWidth = 282; pictureHeight = 282; preserveAspect; ]
  372.  
  373. :[font = text; inactive; endGroup; ]
  374. Mathematica generates all graphics in PostScript, so that you can resize pictures, and make use of the resolution available on different types of printers. (Note, however, that to save disk space the graphics in this Notebook have been converted into bitmap images, which have lower resolution and do not look as good when resized or printed.  The ability to convert images into bitmap form is useful when space is at a premium, and for animations, which are normally not printed.)
  375. ;[s]
  376. 2:0,1;11,0;482,-1;
  377. 2:1,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  378. :[font = section; inactive; startGroup; Cclosed; ]
  379. Animated Graphics 
  380. :[font = text; inactive; ]
  381. You can use sequences of graphics cells in a Notebook as frames in a "movie". To show a movie, you select its sequence of cells (by clicking the bracket that encloses all of them), then type Y.  The movie appears in the first graphics cell you have selected.  The movie is produced by showing in rapid succession the graphics cells in the selected sequence.  A click anywhere inside the window will stop the animation.
  382. ;[s]
  383. 3:0,0;191,1;193,0;420,-1;
  384. 2:2,14,10,New York,0,10,0,0,0;1,17,12,Chicago,0,12,0,0,0;
  385. :[font = text; inactive; ]
  386. For information on other controls for viewing Mathematica  movies, see the Notebook Read This First!
  387. ;[s]
  388. 5:0,0;46,1;57,0;84,2;100,0;101,-1;
  389. 3:3,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;1,14,10,New York,1,10,0,0,0;
  390. :[font = text; inactive; ]
  391. This Notebook contains a sample of animation in Mathematica.  Due to disk space limitations, this is a very simple two-dimensional example.  Look in the "Animations" folder on your disk for other examples of animated graphics.
  392. ;[s]
  393. 3:0,0;48,1;59,0;227,-1;
  394. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  395. :[font = text; inactive; ]
  396. What follows is an animation showing how the curve of a Bessel function changes with the order of the Bessel function.  (The movie looks best when run fairly slowly, with the frames shown cyclically.)
  397. :[font = input; ]
  398. <<Needs["Graphics`Animation`"]
  399. :[font = input; ]
  400. MoviePlot[BesselJ[n, x], {x, 0, 15}, {n, 1, 7, 0.2},
  401.             PlotRange->{-0.5, 1.0}]
  402. :[font = postscript; inactive; PICT; pictureID = 13084; output; startGroup; Cclosed; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  403.  
  404. :[font = postscript; inactive; PICT; pictureID = 12426; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  405.  
  406. :[font = postscript; inactive; PICT; pictureID = 26137; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  407.  
  408. :[font = postscript; inactive; PICT; pictureID = 12558; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  409.  
  410. :[font = postscript; inactive; PICT; pictureID = 14240; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  411.  
  412. :[font = postscript; inactive; PICT; pictureID = 9142; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  413.  
  414. :[font = postscript; inactive; PICT; pictureID = 22065; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  415.  
  416. :[font = postscript; inactive; PICT; pictureID = 910; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  417.  
  418. :[font = postscript; inactive; PICT; pictureID = 19887; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  419.  
  420. :[font = postscript; inactive; PICT; pictureID = 28709; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  421.  
  422. :[font = postscript; inactive; PICT; pictureID = 9183; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  423.  
  424. :[font = postscript; inactive; PICT; pictureID = 20703; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  425.  
  426. :[font = postscript; inactive; PICT; pictureID = 11535; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  427.  
  428. :[font = postscript; inactive; PICT; pictureID = 30976; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  429.  
  430. :[font = postscript; inactive; PICT; pictureID = 9455; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  431.  
  432. :[font = postscript; inactive; PICT; pictureID = 29084; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  433.  
  434. :[font = postscript; inactive; PICT; pictureID = 30681; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  435.  
  436. :[font = postscript; inactive; PICT; pictureID = 31488; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  437.  
  438. :[font = postscript; inactive; PICT; pictureID = 4847; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  439.  
  440. :[font = postscript; inactive; PICT; pictureID = 17950; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  441.  
  442. :[font = postscript; inactive; PICT; pictureID = 18992; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  443.  
  444. :[font = postscript; inactive; PICT; pictureID = 18147; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  445.  
  446. :[font = postscript; inactive; PICT; pictureID = 8348; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  447.  
  448. :[font = postscript; inactive; PICT; pictureID = 24678; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  449.  
  450. :[font = postscript; inactive; PICT; pictureID = 8016; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  451.  
  452. :[font = postscript; inactive; PICT; pictureID = 19083; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  453.  
  454. :[font = postscript; inactive; PICT; pictureID = 15287; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  455.  
  456. :[font = postscript; inactive; PICT; pictureID = 18030; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  457.  
  458. :[font = postscript; inactive; PICT; pictureID = 26621; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  459.  
  460. :[font = postscript; inactive; PICT; pictureID = 1088; output; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  461.  
  462. :[font = postscript; inactive; PICT; pictureID = 30762; output; endGroup; endGroup; pictureLeft = 76; pictureWidth = 282; pictureHeight = 171; preserveAspect; ]
  463.  
  464. :[font = section; inactive; startGroup; Cclosed; ]
  465. Programming in Mathematica 
  466. ;[s]
  467. 3:0,0;15,1;26,0;28,-1;
  468. 2:2,19,14,New York,1,14,34351,1374,1374;1,19,14,New York,3,14,34351,1374,1374;
  469. :[font = text; inactive; ]
  470. You can use Mathematica not only as a "calculator", but also as a full symbolic programming language.
  471.  
  472. Many application packages covering specific areas have been or are being written in the Mathematica language.
  473. ;[s]
  474. 6:0,1;0,0;12,1;23,0;191,1;202,0;213,-1;
  475. 2:3,14,10,New York,0,10,0,0,0;3,14,10,New York,2,10,0,0,0;
  476. :[font = subsubsection; inactive; startGroup; Cclosed; ]
  477. A Graphics Application Package
  478. :[font = input; ]
  479. <<Needs["Graphics`Polyhedra`"]
  480. :[font = text; inactive; ]
  481. This loads in a package that defines properties of polyhedra.
  482.  
  483. The package defines, among other things, the geometry of a dodecahedron.
  484. :[font = input; startGroup; ]
  485. Dodecahedron[ ] // Short
  486. :[font = output; inactive; output; endGroup; ]
  487. The Unformatted text for this cell was not generated.
  488. Use options in the Actions Settings dialog box to control
  489. when Unformatted text is generated.
  490. ;[o]
  491. {Polygon[<<1>>], <<10>>, Polygon[{<<5>>}]}
  492. :[font = text; inactive; ]
  493. The Dodecahedron function gives the coordinates for the faces of a dodecahedron, shown here in shortened form.
  494. ;[s]
  495. 4:0,0;4,2;16,1;17,0;111,-1;
  496. 3:2,14,10,New York,0,10,0,0,0;1,13,9,Courier,0,10,0,0,0;1,14,10,New York,1,10,0,0,0;
  497. :[font = input; startGroup; ]
  498. Show[Graphics3D[ % ]]
  499. :[font = postscript; inactive; PICT; pictureID = 2215; output; pictureLeft = 50; pictureWidth = 282; pictureHeight = 277; preserveAspect; ]
  500.  
  501. :[font = output; inactive; output; endGroup; ]
  502. The Unformatted text for this cell was not generated.
  503. Use options in the Actions Settings dialog box to control
  504. when Unformatted text is generated.
  505. ;[o]
  506. -Graphics3D-
  507. :[font = text; inactive; ]
  508. This shows the dodecahedron as a three-dimensional graphical object.
  509.  
  510. As another example, we can use the definitions from the polyhedra package to create an image of a stellated icosahedron, which is often used as an icon for the Mathematica system.
  511. ;[s]
  512. 3:0,0;230,1;241,0;250,-1;
  513. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  514. :[font = input; startGroup; ]
  515. Show[ Graphics3D[ Stellate[ Icosahedron[ ] ] ] ]
  516. :[font = postscript; inactive; PICT; pictureID = 26624; output; pictureLeft = 50; pictureWidth = 282; pictureHeight = 277; preserveAspect; ]
  517.  
  518. :[font = output; inactive; output; endGroup; endGroup; ]
  519. The Unformatted text for this cell was not generated.
  520. Use options in the Actions Settings dialog box to control
  521. when Unformatted text is generated.
  522. ;[o]
  523. -Graphics3D-
  524. :[font = subsubsection; inactive; startGroup; Cclosed; ]
  525. More on Programming
  526. :[font = text; inactive; ]
  527. There are several styles of programming in Mathematica.  One of them is procedural programming, as you would find in a standard structured programming language such as C or Pascal.
  528.  
  529. Another is "rule-based programming".  The idea is to give transformation rules which specify how Mathematica should transform expressions it receives as input. 
  530.  
  531. You can give rules that mimic the formulas you might find in a mathematics textbook.
  532.  
  533. Here is an example of how you might teach Mathematica about a new form of logarithm function, called nlog.
  534. ;[s]
  535. 9:0,0;43,1;54,0;279,1;290,0;472,1;483,0;531,2;535,0;537,-1;
  536. 3:5,14,10,New York,0,10,0,0,0;3,14,10,New York,2,10,0,0,0;1,13,9,Courier,0,10,0,0,0;
  537. :[font = input; startGroup; ]
  538. nlog[a b c d^2]
  539. :[font = output; inactive; output; endGroup; ]
  540. nlog[a*b*c*d^2]
  541. ;[o]
  542.             2
  543. nlog[a b c d ]
  544. :[font = text; inactive; ]
  545. Mathematica initially knows nothing about our new function, so it does nothing to expressions involving nlogs.
  546. ;[s]
  547. 2:0,1;11,0;111,-1;
  548. 2:1,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  549. :[font = input; ]
  550. nlog[x_ y_] := nlog[x] + nlog[y]
  551. :[font = text; inactive; ]
  552. This tells Mathematica how to expand out logarithms of products.
  553. ;[s]
  554. 3:0,0;11,1;22,0;65,-1;
  555. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  556. :[font = input; startGroup; ]
  557. nlog[a b c d^2]
  558. :[font = output; inactive; output; endGroup; ]
  559. nlog[a] + nlog[b] + nlog[c] + nlog[d^2]
  560. ;[o]
  561.                                     2
  562. nlog[a] + nlog[b] + nlog[c] + nlog[d ]
  563. :[font = text; inactive; ]
  564. Now Mathematica can expand the nlog out. 
  565. ;[s]
  566. 5:0,0;4,1;15,0;31,2;35,0;42,-1;
  567. 3:3,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;1,13,9,Courier,0,10,0,0,0;
  568. :[font = input; ]
  569. nlog[x_^n_] := n nlog[x]
  570. :[font = text; inactive; ]
  571. This gives a rule for nlog of a power.
  572. ;[s]
  573. 3:0,0;22,1;26,0;39,-1;
  574. 2:2,14,10,New York,0,10,0,0,0;1,13,9,Courier,0,10,0,0,0;
  575. :[font = input; startGroup; ]
  576. nlog[a b c d^2]
  577. :[font = output; inactive; output; endGroup; ]
  578. nlog[a] + nlog[b] + nlog[c] + 2*nlog[d]
  579. ;[o]
  580. nlog[a] + nlog[b] + nlog[c] + 2 nlog[d]
  581. :[font = text; inactive; endGroup; endGroup; ]
  582. Now Mathematica can expand the expression out completely.
  583. ;[s]
  584. 3:0,0;4,1;15,0;58,-1;
  585. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  586. :[font = section; inactive; startGroup; Cclosed; ]
  587. Mathematica's User Interface
  588. ;[s]
  589. 2:0,1;11,0;29,-1;
  590. 2:1,19,14,New York,1,14,34351,1374,1374;1,19,14,New York,3,14,34351,1374,1374;
  591. :[font = text; inactive; ]
  592. Mathematica consists of two parts — the "Kernel", which actually does computations, and the "Front End", which deals with interaction with the user.  The Kernel of Mathematica is essentially the same on all computers that support Mathematica.  The Front End, on the other hand, works differently on different kinds of computer. 
  593.  
  594. On the Macintosh, Mathematica has a sophisticated Front End that takes advantage of the Macintosh's unique user interface capabilities.  (You can actually use the Macintosh Front End even if you are using a "remote Kernel", say on a supercomputer connected through a network.)
  595. ;[s]
  596. 8:0,1;11,0;164,1;175,0;230,1;241,0;348,1;359,0;607,-1;
  597. 2:4,14,10,New York,0,10,0,0,0;4,14,10,New York,2,10,0,0,0;
  598. :[font = subsubsection; inactive; startGroup; ]
  599. Notebooks
  600. :[font = text; inactive; ]
  601. One of the most important aspects of the Macintosh Front End is its ability to support Mathematica "Notebooks".  
  602.  
  603. This file is an example of a Notebook.  Notebooks consist of a mixture of text, graphics, and Mathematica input.
  604.  
  605. Notebooks can be used like "interactive textbooks" — you read the text in the Notebook, then use the Mathematica input in the Notebook to perform calculations.
  606. ;[s]
  607. 7:0,0;87,1;98,0;209,1;220,0;330,1;341,0;389,-1;
  608. 2:4,14,10,New York,0,10,0,0,0;3,14,10,New York,2,10,0,0,0;
  609. :[font = text; inactive; ]
  610. Here is a sample Mathematica Notebook called Point Plots and Space Curves.  
  611. ;[s]
  612. 5:0,0;17,1;28,0;45,2;73,0;77,-1;
  613. 3:3,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;1,14,10,New York,1,10,0,0,0;
  614. :[font = title; inactive; startGroup; ]
  615. Point Plots and Space Curves
  616. by Theodore W. Gray
  617. ;[s]
  618. 4:0,1;28,0;29,2;48,0;49,-1;
  619. 3:2,23,17,New York,1,18,34351,1374,1374;1,19,14,New York,1,14,34351,1374,1374;1,17,12,New York,2,12,34351,1374,1374;
  620. :[font = text; inactive; ]
  621.      This Notebook defines the functions PointPlot, PointPlot3D, PointParamPlot3D, SpaceCurve, and PointSpaceCurve.  These functions let you make discrete point plots in two and three dimensions.  The SpaceCurve and PointSpaceCurve functions let you make three-dimensional functions of one parameter (lines or points in 3D).
  622. ;[s]
  623. 11:0,0;41,1;50,0;52,1;63,0;65,1;81,0;83,1;93,0;99,1;114,0;325,-1;
  624. 2:6,14,10,New York,0,10,0,0,0;5,14,10,New York,1,10,0,0,0;
  625. :[font = section; inactive; startGroup; Cclosed; ]
  626. Examples
  627. :[font = text; inactive; ]
  628.      Each of the functions defined in this Notebook is a variation of either Plot, Plot3D, or ParametricPlot3D.  The arguments are quite similar to these standard functions.  Following are descriptions of each of the functions.
  629. ;[s]
  630. 7:0,0;77,1;81,0;83,1;89,0;94,1;110,0;228,-1;
  631. 2:4,14,10,New York,0,10,0,0,0;3,14,10,New York,1,10,0,0,0;
  632. :[font = subsection; inactive; startGroup; Cclosed; ]
  633. PointPlot
  634. :[font = text; inactive; ]
  635.      PointPlot[ f, {x, min, max, (step)}] produces a plot of f(x) vs. x.  Here is an example:
  636. ;[s]
  637. 3:0,0;66,1;69,0;94,-1;
  638. 2:2,14,10,New York,0,10,0,0,0;1,14,10,New York,2,10,0,0,0;
  639. :[font = input; startGroup; ]
  640. PointPlot[Sin[x], {x, 0, 2 Pi, 0.2}]
  641. :[font = postscript; inactive; PICT; pictureID = 20909; output; pictureLeft = 67; pictureWidth = 243; pictureHeight = 147; preserveAspect; ]
  642.  
  643. :[font = output; inactive; output; endGroup; endGroup; ]
  644. The Unformatted text for this cell was not generated.
  645. Use options in the Actions Settings dialog box to control
  646. when Unformatted text is generated.
  647. ;[o]
  648. -Graphics-
  649. :[font = subsection; inactive; startGroup; Cclosed; ]
  650. PointPlot3D
  651. :[font = text; inactive; ]
  652.      PointPlot3D[ f, {x, min, max, (step)}, {y, min, max, (step)}] produces a plot of f(x, y), plotted with points instead of surfaces.
  653. :[font = input; startGroup; ]
  654. PointPlot3D[x y, {x, -4, 4, 0.5}, {y, -4, 4, 0.5}, 
  655.             BoxRatios->{1,1,1}]
  656. :[font = postscript; inactive; PICT; pictureID = 12547; output; pictureLeft = 107; pictureWidth = 202; pictureHeight = 198; preserveAspect; ]
  657.  
  658. :[font = output; inactive; output; endGroup; endGroup; ]
  659. The Unformatted text for this cell was not generated.
  660. Use options in the Actions Settings dialog box to control
  661. when Unformatted text is generated.
  662. ;[o]
  663. -Graphics3D-
  664. :[font = subsection; inactive; startGroup; Cclosed; ]
  665. PointParamPlot3D
  666. :[font = text; inactive; ]
  667.      PointParamPlot3D[{x,y,z}, {u, min, max, (step)}, {v, min, max, (step)}] produces a parametric plot of (x(u,v), y(u,v), z(u,v)), plotted with points instead of surfaces.
  668. :[font = input; startGroup; ]
  669. PointParamPlot3D[{Sin[u] Cos[v], 
  670.                         Sin[u] Sin[v], Cos[u]}, 
  671.         {u, 0, Pi, Pi/15}, {v, 0, 2 Pi, Pi/15}, 
  672.         BoxRatios->{1,1,1}]
  673. :[font = postscript; inactive; PICT; pictureID = 23646; output; pictureLeft = 113; pictureWidth = 205; pictureHeight = 201; preserveAspect; ]
  674.  
  675. :[font = output; inactive; output; endGroup; endGroup; ]
  676. The Unformatted text for this cell was not generated.
  677. Use options in the Actions Settings dialog box to control
  678. when Unformatted text is generated.
  679. ;[o]
  680. -Graphics3D-
  681. :[font = subsection; inactive; startGroup; Cclosed; ]
  682. SpaceCurve
  683. :[font = text; inactive; ]
  684.      SpaceCurve[{x,y,z}, {u, min, max, (step)}] produces a parametric plot of (x(u), y(u), z(u)), with the calculated points connected by straight lines.
  685. :[font = input; startGroup; ]
  686. SpaceCurve[{u Sin[u], u Cos[u], u}, 
  687.            {u, 0, 15, 0.15}, BoxRatios->{1,1,1}]
  688. :[font = postscript; inactive; PICT; pictureID = 32679; output; pictureLeft = 107; pictureWidth = 202; pictureHeight = 198; preserveAspect; ]
  689.  
  690. :[font = output; inactive; output; endGroup; endGroup; ]
  691. The Unformatted text for this cell was not generated.
  692. Use options in the Actions Settings dialog box to control
  693. when Unformatted text is generated.
  694. ;[o]
  695. -Graphics3D-
  696. :[font = subsection; inactive; startGroup; Cclosed; ]
  697. PointSpaceCurve
  698. :[font = text; inactive; ]
  699.     PointSpaceCurve[{x,y,z}, {u, min, max, (step)}] produces a parametric plot of (x(u), y(u), z(u)), with the calculated points shown as dots.
  700. :[font = input; startGroup; ]
  701. PointSpaceCurve[{u Sin[u], u Cos[u], u^2}, 
  702.             {u, 0, 15, 0.30}, BoxRatios->{1,1,1}]
  703. :[font = postscript; inactive; PICT; pictureID = 13244; output; pictureLeft = 114; pictureWidth = 198; pictureHeight = 194; preserveAspect; ]
  704.  
  705. :[font = output; inactive; output; endGroup; endGroup; endGroup; ]
  706. The Unformatted text for this cell was not generated.
  707. Use options in the Actions Settings dialog box to control
  708. when Unformatted text is generated.
  709. ;[o]
  710. -Graphics3D-
  711. :[font = section; inactive; initialization; startGroup; Cclosed; pageBreak; ]
  712. Implementation
  713. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  714. Remove previous definitions for the functions defined in this file:
  715. :[font = input; initialization; endGroup; ]
  716. *)
  717. Remove[PointPlot, PointParamPlot3D, PointPlot3D,
  718.         SpaceCurve, PointSpaceCurve];
  719. (*
  720. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  721. Begin this package:
  722. :[font = input; initialization; endGroup; ]
  723. *)
  724. BeginPackage["PointPlots`"];
  725. (*
  726. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  727. Define the usage strings for each of the functions:
  728. :[font = input; initialization; ]
  729. *)
  730. PointPlot::usage =
  731.     "PointPlot[f, {u, u0, u1, (du)}], (options)] \
  732.     produces a 2D plot made out of points. \
  733.     Options are passed to Show[]";
  734. (*
  735. :[font = input; initialization; ]
  736. *)
  737. PointPlot3D::usage =
  738.     "PointPlot3D[f, {x, x0, x1, (dx)}, \
  739.     {y, y0, y1, (dy)}, (options)] \
  740.     produces a 3D plot made out of points. \
  741.     Options are passed to Show[]";
  742. (*
  743. :[font = input; initialization; ]
  744. *)
  745. PointParamPlot3D::usage =
  746.     "PointParamPlot3D[{x, y, z}, {u, u0, u1, (du)}, \
  747.     {v, v0, v1, (dv)}, (options)] \
  748.     produces a 3D parametric plot made out of points. \ 
  749.     Options are passed to Show[]";
  750. (*
  751. :[font = input; initialization; ]
  752. *)
  753. SpaceCurve::usage =
  754.     "SpaceCurve[{x, y, z}, {u, u0, u1, (du)}, \
  755.     (options)] \
  756.     produces a 3D space curve. \
  757.     Options are passed to Show[]";
  758. (*
  759. :[font = input; initialization; endGroup; ]
  760. *)
  761. PointSpaceCurve::usage =
  762.     "PointSpaceCurve[{x, y, z}, \
  763.     {u, u0, u1, (du)}, (options)] \
  764.     produces a set of points in 3D. \
  765.     Options are passed to Show[]";
  766. (*
  767. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  768. Begin the private part of this package:
  769. :[font = input; initialization; endGroup; ]
  770. *)
  771. Begin["`Private`"];
  772. `plotpoints = PlotPoints /. Options[Plot3D]; 
  773. (*
  774. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  775. Define PointPlot:
  776. :[font = input; initialization; endGroup; ]
  777. *)
  778. Attributes[PointPlot] = {HoldFirst};
  779.  
  780. PointPlot[function_, range:{x_,___}, options___] := 
  781.             ListPlot[Table[{x, function}, range], options];
  782. (*
  783. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  784. Define PointParamPlot3D:
  785. :[font = input; initialization; endGroup; ]
  786. *)
  787. Attributes[PointParamPlot3D] = {HoldFirst};
  788.  
  789. PointParamPlot3D[fun:{_, _, _}, 
  790.     {u_, u0_, u1_, du_:((u1-u0)/(plotpoints-1))}, 
  791.     {v_, v0_, v1_, dv_:((v1-v0)/(plotpoints-1))}, opts___] :=
  792.     Show[Graphics3D[Table[Point[N[fun]], 
  793.                         {u, u0, u1, du}, 
  794.                         {v, v0, v1, dv}]], opts];
  795. (*
  796. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  797. Define PointPlot3D (in terms of PointParamPlot3D):
  798. :[font = input; initialization; endGroup; ]
  799. *)
  800. Attributes[PointPlot3D] = {HoldFirst};
  801.  
  802. PointPlot3D[fun_, ulim:{u_, ___}, vlim:{v_, ___}, opts___] :=
  803.     PointParamPlot3D[ {u, v, fun}, ulim, vlim, opts];
  804. (*
  805. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  806. Define SpaceCurve:
  807. :[font = input; initialization; endGroup; ]
  808. *)
  809. Attributes[SpaceCurve] = {HoldFirst};
  810.  
  811. SpaceCurve[fun:{_, _, _}, 
  812.   {u_, u0_, u1_, du_:((u1-u0)/(plotpoints-1))}, opts___] :=
  813.     Show[Graphics3D[Line[Table[N[fun], 
  814.                          {u,u0,u1,du}]]], opts];
  815. (*
  816. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  817. Define PointSpaceCurve:
  818. :[font = input; initialization; endGroup; ]
  819. *)
  820. Attributes[PointSpaceCurve] = {HoldFirst}
  821.  
  822. PointSpaceCurve[fun:{_, _, _}, 
  823.   {u_, u0_, u1_, du_:((u1-u0)/(plotpoints-1))}, opts___] :=
  824.     Show[Graphics3D[Table[Point[N[fun]], 
  825.                     {u,u0,u1,du}]], opts];
  826. (*
  827. :[font = text; inactive; initialization; startGroup; Cclosed; ]
  828. End this package:
  829. :[font = input; initialization; endGroup; endGroup; endGroup; endGroup; endGroup; endGroup; ]
  830. *)
  831. End[];
  832. EndPackage[];
  833. (*
  834. ^*)